Abort if the shared memory pool cannot be created
authorEmmanuele Bassi <ebassi@gnome.org>
Wed, 20 Jan 2021 19:10:54 +0000 (19:10 +0000)
committerEmmanuele Bassi <ebassi@gnome.org>
Wed, 20 Jan 2021 19:10:54 +0000 (19:10 +0000)
If we cannot allocate memory, we cannot create any windowing system
surface. There's no coming back from that.

Fixes: #3607
gdk/wayland/gdkdisplay-wayland.c

index f5ea972fa266e895e9e2031ffe6e93ae6c933678..3acc10ed507a80efb0650a877fe3d646a7bddffc 100644 (file)
@@ -1350,21 +1350,23 @@ _gdk_wayland_display_create_shm_surface (GdkWaylandDisplay *display,
   data->buffer = NULL;
   data->scale = scale;
 
-  stride = cairo_format_stride_for_width (CAIRO_FORMAT_ARGB32, width*scale);
+  stride = cairo_format_stride_for_width (CAIRO_FORMAT_ARGB32, width * scale);
 
   data->pool = create_shm_pool (display->shm,
-                                height*scale*stride,
+                                height * scale * stride,
                                 &data->buf_length,
                                 &data->buf);
+  if (G_UNLIKELY (data->pool == NULL))
+    g_error ("Unable to create shared memory pool");
 
   surface = cairo_image_surface_create_for_data (data->buf,
                                                  CAIRO_FORMAT_ARGB32,
-                                                 width*scale,
-                                                 height*scale,
+                                                 width * scale,
+                                                 height * scale,
                                                  stride);
 
   data->buffer = wl_shm_pool_create_buffer (data->pool, 0,
-                                            width*scale, height*scale,
+                                            width * scale, height * scale,
                                             stride, WL_SHM_FORMAT_ARGB8888);
 
   cairo_surface_set_user_data (surface, &gdk_wayland_shm_surface_cairo_key,